package com.bestcem.xm.award.dao.mapper;

import com.bestcem.xm.award.dao.mapper.query.RequestQuery;
import com.bestcem.xm.award.entity.mysql.AwardRequestEntity;
import com.bestcem.xm.award.service.dto.awardaward.GetRequestStatsDTO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.Date;

/**
 * 用户请求奖励记录
 *
 * @author jie.yao <jie.yao@idiaoyan.com>
 * @version v1.0
 * @date 2021/9/15 17:02
 */
@Mapper
public interface AwardRequestMapper {

    /**
     * 插入数据
     *
     * @param awardRequestEntity 用户请求奖励记录
     * @return 插入成功条数
     */
    Integer insert(AwardRequestEntity awardRequestEntity);

    /**
     * 根据id查询奖励请求
     *
     * @param requestId 请求id
     * @return 请求记录
     */
    AwardRequestEntity getById(@Param("requestId") String requestId);

    /**
     * 根据id、奖励id、请求状态更新请求状态
     *
     * @param requestId 请求id
     * @param status    请求状态
     * @param awardId   奖励id
     * @param newStatus 待更新的奖励请求状态
     * @param updateTime 更新时间
     * @return 更新成功条数
     */
    Integer updateStatusByIdAndAwardIdAndStatus(@Param("requestId") String requestId, @Param("status") Integer status,
                                                @Param("awardId") String awardId, @Param("newStatus") Integer newStatus, Date updateTime);

    /**
     * 根据指定条件查询匹配数量
     *
     * @param requestQuery 查询条件
     * @return 匹配数量
     */
    Integer countByConditions(RequestQuery requestQuery);

    /**
     * 根据条件查询通过数量与总数量
     * @param requestQuery
     * @return
     */
    GetRequestStatsDTO selectTotalCountAndPassCount(RequestQuery requestQuery);

}
